This invention relates to a convolver, namely a system comprising an arithmetic unit for carrying out the operation defined by the following equation: ##EQU1## This equation is explained and illustrated for the case of k=9, i.e., for a 3-by-3 moving window (kernel) of video data and more specifically to a real time pipelined convolver for forming the sum of products p.sub.i w.sub.i, wherein i is a number from 1 to n.sup.2 and n is a number that defines the size of an n-by-n kernel, p.sub.i are the pixel values, typically 12-bit values of an n-by-n kernel, w.sub.i are the convolver weights that may have positive (w.sub.i &gt;0) and negative (w.sub.i &lt;0) values. The pixel values and weights are represented by absolute value binary numbers and a sign bit.
In the processing of video data, it is necessary to produce the sum of products of fixed weights w.sub.i times the corresponding pixel values p.sub.i of successive rows in an n-by-n kernel, such as a 3-by-3 kernel. Examination of the typical weights involved in low-level vision applications indicates that small positive or negative integers are most common, with the ratio of the smallest to the largest weight being usually less than 20. Consequently, each weight contains six bits consisting of a sign bit and five bits for magnitude from zero to 31. The sign bit expands the range of weight values from -31 to +31.
To prevent the data path from overflowing, it is necessary to scale the output of the convolver. Scaling is accomplished by shifting down the data one or more bits, i.e., dividing by some power of two. This is most easily done by switches selecting the parallel output, i.e., by selecting the output from one or more bit positions to the right. The problem is in the requisite hardware for multiplying the pixel values p.sub.i by positive and negative weights w.sub.i and forming the sum of the products.